package br.ufcg.edu.algoritimo;

import br.ufcg.edu.util.Constantes;


public class DecodificadorHuffman {

	private final No<Long> raiz;
	private No<Long> noAtual;

	public DecodificadorHuffman(No<Long> raiz) {
		this.raiz = raiz;
		noAtual = this.raiz;
	}
	
	public String decodificaCaracteres(char[] cs){
		StringBuilder st = new StringBuilder("");
		for (char c : cs) {
			if (c == Constantes.BIT_ZERO) {
				noAtual = noAtual.getEsquerda();
			} else {
				noAtual = noAtual.getDireita();
			}
			
			if (noAtual.isFolha()) {
				st.append((char) noAtual.getDescricao());
				noAtual = this.raiz;
			}
						
		}
		return st.toString();
	}
}
